1. Field of the Invention
The present invention relates generally to a method and apparatus for remotely accessing, interacting and monitoring a computer system independent of the operating system, and more particularly to remotely displaying graphics-mode display data of the accessed computer system.
2. Description of Related Art
Advances in computing technology have caused a shift away from centralized mainframe computing to distributed computing using multiple personal computers (PCs) connected to a network. The network typically includes one or more server class personal computers to handle file, print and application services, which are common to all the connected PCs. Therefore, the server becomes an important resource which the entire network depends upon.
Oftentimes, businesses may require more than one server. Networks may demand isolation for security reasons. Networks may be logically subdivided for performance or practical reasons. In particular, networks may be in different geographic locations. However, oftentimes the maintenance and management of the servers falls onto a single group or person, called a network administrator. In these cases where the managed server is in an inconvenient location, it is desirable for the network administrator to be able to monitor the health of the managed server without traveling to its location. In the past, the local network administrator operating from a remote management computer could Use remote management and consoling utilities such as Compaq Insight Manager, Compaq Carbon Copy, or PC/Anywhere to gain access to a managed server. Access was preferably acquired through the local area network (LAN). A secondary out-of-band communication mechanism, such as a modem, was also sometimes implemented to provide fallback access in the case of network outages. These utilities provided a great deal of insight and control when the operating system on the managed server was operating normally. However, due to their reliance on the server operating system, these utilities were generally unavailable when the server was downxe2x80x94precisely when they would be most helpful. If the server was down, the administrator had no way to assess the fault or return the server to an online state.
To help in this regard, an accessory known as Compaq Server Manager/R was developed. This accessory was essentially a personal computer system on an add-in board adapted to interact with the host server. Server Manager/R included a processor, memory, modem and software to operate independently of the server to which it was installed. To monitor the server from a remote location, the network administrator would dial into the server Manager/R board and establish a communications link. If a connection was established, the processor of server Manager/R would periodically acquire access to an expansion bus of the server to read the contents of the server video memory. The processor would then parse the contents to send to the local computer via the communications link. Due to the indexed architecture of the CGA, EGA and VGA graphics controllers, only textual data could be obtained in this way without causing unwanted side-effects on the server""s display. The remote console feature was therefore only available in text modes. A separate power supply was provided to the server Manager/R board so that it would operate even while the server was booting or powered down.
To bring this functionality to a broader base of customers, a more integrated approach was taken with a device known as the integrated remote console (IRC) device. This device would connect to a conventional peripheral component interconnect (PCI) bus to monitor video activity. As PCI transactions were passed to a video controller also attached to the PCI bus, the IRC device would snoop the video transactions for the purpose of encoding the screen activity and sending the encoded data to a remote computer. Due to the amount and diversity of video traffic on the PCI bus during graphics modes, IRC worked best with text-mode operating systems. If the server was running a graphical operating system, such as Microsoft Windows, the IRC device would cease to transmit information when the graphics mode was entered. Thus, although the IRC device was very useful for text-mode operating systems and to monitor graphical operating systems prior to entrance into graphics mode, a more complete solution was desired.
In one embodiment of the present invention, a managed server includes a video graphics controller having a frame buffer. The frame buffer may be periodically read to determine if the contents of the frame buffer has changed. Changes are transmitted to a remote console in communication with the managed server.
The frame buffer may be divided into a number of blocks with each block having a signature based on its contents. The signatures may be stored in a buffer. As the blocks are periodically read, new signature values are calculated and compared to the previously calculated signature values to determine if the blocks have changed. The changed blocks are transmitted to the remote console via a communications link. This greatly reduces the amount of RAM required-to store the previous state of the frame buffer so that future differences can be detected and transmitted. Additionally, the block signature value can be used to determine if one or more adjacent blocks are similar. If two or more blocks are similar, the first block is transmitted followed by a command indicating the number of times to repeat the block. Implementing all of these techniques reduces the amount of data that needs to be transmitted such that acceptable performance can be obtained even over conventional modem connections (28.8 kbaud).
To decrease the latency between when the video buffer is modified and when this modification is detected, an interlacing algorithm can be applied to the continuous buffer scan operation. Instead of reading each block of the frame buffer, a fraction of the frame buffer may be read, such as every fourth block. Each pass may read a different fraction of the frame buffer until the entire frame buffer has been read. If changes are detected during a pass, the blocks surrounding the changed block may be xe2x80x9cmarkedxe2x80x9d for accelerated reading (i.e. read immediately or on the next pass). The xe2x80x9cmarksxe2x80x9d are cleared once the blocks have been checked.
The blocks of the frame buffer comprise rows and columns. Periodically, such as at the end of each row, the video graphics controller is checked for configuration changes. Possible changes include changes to screen resolution, color depth and color mode. If changes are detected, commands are developed to communicate the changes to the remote console. Changes for a pointing device, including position, shape and size are handled similarly.